(function () {
    // 描述一个对象的类型
    type myType = {
        name: string,
        age: number
    }
    const obj: myType = {
        name: 'sss',
        age: 111
    }
    /*
    * 接口：用来定义一个类的结构，用来一个类中应该包含哪些属性和方法
    *     同时接口也可以当成类型声明使用
    *     type不可重复声明,interface重复声明会融合使用
    * */
    interface myInterface {
        name: string
        age: number
    }
    interface myInterface {
        gender: string
    }
    const obj2: myInterface = {
        name: 'sss',
        age: 111,
        gender: '男'
    }
    /*
    * 接口中的所有属性都不能有实际的值
    * 接口只定义对象的结构，不考虑实际值
    * 在接口中所有的方法都是抽象类
    * */
    interface myInter {
        name: string,
        sayHello(): void
    }
    // 实现接口
    class MyClass implements myInterface {
        name: string
        age: number
        gender: string
        constructor(name: string, age: number, gender: string) {
            this.name = name
            this.age = age
            this.gender = gender
        }
        sayHello() {
            console.log('123')
        }
    }
})()